In the field of digital communication systems, digital information is conveyed from a transmitter to a receiver through a channel. xe2x80x9cChannelxe2x80x9d is a generalized term that can include many different mediums, such as recording media, telephone lines and electromagnetic spectrum. In data storage systems, such as magnetic disc drives, the channel includes a storage medium, and the digital information is transmitted to the storage medium and stored for some period of time before being recovered and delivered to the receiver.
A typical magnetic disc drive includes one or more rigid discs mounted for rotation on a hub or spindle. Each disc has an associated head formed of a hydrodynamic bearing and a transducer, for communicating with the surface of the disc. An electromechanical actuator moves the data head radially over the disc surface for track seek operations and holds the transducer directly over a desired track on the disc surface for track following operations. A drive controller controls the disc drive based on commands received from a host system to retrieve information from the discs and to store information on the discs. The drive controller includes various subsystems, such as a xe2x80x9chost interfacexe2x80x9d for communicating with the host system, a xe2x80x9cservo subsystemxe2x80x9d for controlling the actuator, a xe2x80x9cwrite channelxe2x80x9d for recording data on a storage medium, and a xe2x80x9cread channelxe2x80x9d for receiving recorded data from the storage medium.
Information is typically stored in concentric data tracks on the disc surface. The direction of current through the transducer is controlled to encode magnetic flux reversals on the disc surface within the selected data track. In one type of coding, known as non-retum-to-zero-inverse (NRZI) coding, a digital xe2x80x9conexe2x80x9d is represented by a magnetic flux reversal from one magnetic domain to the next in the data track, and a digital xe2x80x9czeroxe2x80x9d is represented by a lack of a magnetic flux reversal from one magnetic domain to the next.
In retrieving data from the disc, the servo subsystem controls the electromechanical actuator so that the data head flies over the desired data track, senses the flux reversals stored in the data track, and generates a read signal based on those flux reversals. The read signal is typically conditioned and then decoded by the read channel to recover the data represented by the flux reversals. A typical read channel includes automatic gain control circuitry, a low-pass filter, an analog-to-digital converter or sampler, a sequence detector and a decoder.
A Viterbi detector has been used in the past for the sequence detector in the read channel. The Viterbi detector acts as a maximum-likelihood (ML) sequence detector when the input to the detector consists of a signal plus additive white, Gaussian noise, and when a typical branch metric (the square of the error in the signal provided to the detector) is used. The detected bit sequence is then passed to the decoder for decoding into the original user data.
All channels, including disc drive storage channels, introduce noise into the signals they convey. To detect and sometimes correct signal errors caused by channel noise, a large number of coding techniques have been developed. These coding techniques convert user data words formed of a number of data bits into code words formed of a number of code bits. Coding constraints imposed in the code words can be designed to avoid bit sequences that are prone to generating error events and can permit the detection and sometimes the correction of errors in the signals received from the channel.
The average ratio of the number of user data bits to the number of code bits, m/n, is known as the code rate of the code. In general, the ability to detect and correct errors in a received channel may be increased as the code rate decreases because a lower code rate means a greater amount of redundant information in the code word. However, each additional bit added by the encoder increases the time and energy needed to transmit the signal through the channel.
Several types of code constraints have been proposed. For example, in a disc drive, the rotational speed of the spindle motor that rotates the magnetic media varies over time. This results in non-uniform time intervals between read signal voltage pulses. A phase-locked loop (PLL) is used to lock the phase and frequency of the read timing clock to the phase and frequency of the read signal voltage pulses. To ensure that the PLL is updated regularly, a code can be used that limits the number of consecutive xe2x80x9czerosxe2x80x9d in the read signal to no greater than a maximum number xe2x80x9ckxe2x80x9d. This kind of code is known as a run-lengthlimited (RLL) code with a xe2x80x9ckxe2x80x9d constraint. The smaller value of xe2x80x9ckxe2x80x9d, the better the performance of the PLL. However, the smaller the value of xe2x80x9ckxe2x80x9d, the more difficult the code becomes to implement.
The code may also limit the number of consecutive xe2x80x9conesxe2x80x9d in an encoded bit stream to limit the effects of inter-symbol interference, which occurs when consecutive transitions in the transmitted signal interfere with each other. Such codes are known as maximum transition run (MTR) codes with a xe2x80x9cjxe2x80x9d constraint, where xe2x80x9cjxe2x80x9d is the maximum number of consecutive transitions allowed in the channel signal. For example, to avoid three or more consecutive transitions, codes with an MTR constraint j=2 can be designed. Although MTR codes reduce inter-symbol interference, they eliminate a large number of available code words making it difficult and sometimes impossible to implement MTR constraints with high code rates.
Some magnetic recording channels provide further protection by using error correction codes (ECCs). Successive blocks of data (coded or uncoded) are mapped into successive error correction code words having a data field and an ECC field. The block of data is mapped into the data field, which is divided into a number of multiple-bit ECC symbols. The ECC symbols in the data field are applied to a polynomial function, which generates additional, multiple-bit ECC symbols called xe2x80x9cparity bitsxe2x80x9d that form the ECC field. The number of additional ECC symbols that are concatenated to the data field determines the number of ECC symbols in the ECC code word that can be corrected. For example, with a Reed-Solomon type of ECC, two additional ECC symbols are required to correct one symbol in the ECC code word. An ECC code word having 24 additional ECC symbols concatenated in the ECC field would have the ability to correct error events in up to 12 symbols in the ECC code word.
An ECC decoder is then used in the read channel to detect and correct errors in the ECC code words. For each symbol in the received ECC code word that does not match the corresponding symbol in the transmitted ECC code word, the ECC decoder determines the correct symbol based on the other symbols in the received code word and the polynomial function that was used to generate the additional symbols.
While these coding techniques are effective in avoiding certain error events and providing a means for correcting most remaining error events, they are difficult to implement with high code rates. This limits the efficiency of the code and the speed of the recording channel. The present invention addresses these and other problems, and offers other advantages over the prior art.
One aspect of the present invention relates to a method of encoding data words in which a block of at least one of the data words is mapped into an error correction code (ECC) code word. The ECC code word is defined by a plurality of multiple-bit ECC symbols which are separated by boundaries. Bit patterns are constrained from occurring in the ECC code word based on a relative location of the bit patterns to the boundaries.
Another aspect of the present invention is directed to an encoder for encoding successive data words into respective, successive code words. The encoder includes a data word input; a code word output; and a first encoder unit. The first encoder unit maps each successive data word received on the data word input into a respective, successive code word on the code word output according to a first code. The first code identifies in each code word boundaries between multiple-bit error correction code (ECC) symbols and imposes different code constraints on bit positions in each code word that are closer to the boundaries than bit positions in each code word that are farther from the boundaries.
Another aspect of the present invention is directed to a disc drive storage channel which includes a transducer and an encoder. The transducer is capable of communicating with a data storage disc. The encoder is coupled to the transducer for encoding data into successive error correction code (ECC) code words formed of multiple-bit ECC symbols according to a code. The code constrains bit patterns from occurring in each ECC code word based on a relative location of the bit patterns to boundaries between the multiple-bit ECC symbols. The encoder then transmits the ECC code words to the transducer as a code word stream.
Yet another aspect of the present invention is directed to a disc drive storage channel which includes a transducer and a decoder. The transducer is capable of communicating with a data storage disc. The decoder is coupled to the transducer for receiving a read signal from the transducer and for decoding successive error correction code (ECC) code words represented by the read signal into successive data words according to a code. Each ECC code word includes a plurality of multiple-bit ECC symbols, and the code constrains bit patterns in each ECC code word based on a relative location of the bit patterns to boundaries between the multiple-bit ECC symbols.